package com.lyeducation.security.config;

import com.lyeducation.core.base.SysConstants;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/** Created by sang on 2018/1/2. */
@Configuration
@EnableSwagger2
// @EnableWebMvc
public class WebMvcConfig implements WebMvcConfigurer {
  //  @Override
  //  public void addFormatters(FormatterRegistry registry) {
  //    registry.addConverter(new DateConverter());
  //  }
  //
  //  @Bean
  //  public ExecutorService executorService() {
  //    return Executors.newCachedThreadPool();
  //  }

  @Override
  public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/").addResourceLocations("classpath:/static/");
//    registry.addResourceHandler("/**").addResourceLocations("classpath:/templates/");
    registry
        .addResourceHandler(SysConstants.PROJECT_SWAGGER_UI_HTML_URL.getValue())
        .addResourceLocations("classpath:/META-INF/resources/");

    registry
        .addResourceHandler("/webjars/**")
        .addResourceLocations("classpath:/META-INF/resources/webjars/");
  }

  @Bean
  public Docket createRestApi() {
    return new Docket(DocumentationType.SWAGGER_2)
        .apiInfo(apiInfo())
        .select()
        .apis(
            RequestHandlerSelectors.basePackage(
                SysConstants.PROJECT_SRC_PACKAGE_COM_LYEDUCATION.getValue()))
        .paths(PathSelectors.any())
        .build();
  }

  private ApiInfo apiInfo() {
    return new ApiInfoBuilder()
        .title("lyEducation后台接口文档")
        .description("")
        .termsOfServiceUrl("")
        .version("1.0")
        .build();
  }
}
